home *** CD-ROM | disk | FTP | other *** search
- package netscape.ldap.controls;
-
- import java.io.ByteArrayInputStream;
- import netscape.ldap.LDAPControl;
- import netscape.ldap.ber.stream.BERBoolean;
- import netscape.ldap.ber.stream.BERConstruct;
- import netscape.ldap.ber.stream.BERElement;
- import netscape.ldap.ber.stream.BEREnumerated;
- import netscape.ldap.ber.stream.BERInteger;
- import netscape.ldap.ber.stream.BERIntegral;
- import netscape.ldap.ber.stream.BEROctetString;
- import netscape.ldap.ber.stream.BERSequence;
- import netscape.ldap.client.JDAPBERTagDecoder;
-
- public class LDAPPersistSearchControl extends LDAPControl {
- private int m_changeTypes = 1;
- private boolean m_changesOnly = false;
- private boolean m_returnECs = false;
- public static final int ADD = 1;
- public static final int DELETE = 2;
- public static final int MODIFY = 4;
- public static final int MODDN = 8;
- public static final String PERSISTENTSEARCH = "2.16.840.1.113730.3.4.3";
-
- public LDAPPersistSearchControl() {
- super("2.16.840.1.113730.3.4.3", true, (byte[])null);
- }
-
- public LDAPPersistSearchControl(int var1, boolean var2, boolean var3, boolean var4) {
- super("2.16.840.1.113730.3.4.3", var4, (byte[])null);
- super.m_value = this.createPersistSearchSpecification(var1, var2, var3);
- }
-
- public int getChangeTypes() {
- return this.m_changeTypes;
- }
-
- public boolean getChangesOnly() {
- return this.m_changesOnly;
- }
-
- public boolean getReturnControls() {
- return this.m_returnECs;
- }
-
- public void setChangeTypes(int var1) {
- this.m_changeTypes = var1;
- }
-
- public void setChangesOnly(boolean var1) {
- this.m_changesOnly = var1;
- }
-
- public void setReturnControls(boolean var1) {
- this.m_returnECs = var1;
- }
-
- public LDAPEntryChangeControl parseResponse(byte[] var1) {
- LDAPEntryChangeControl var2 = new LDAPEntryChangeControl();
- ByteArrayInputStream var3 = new ByteArrayInputStream(var1);
- new BERSequence();
- JDAPBERTagDecoder var4 = new JDAPBERTagDecoder();
- int[] var5 = new int[]{0};
-
- try {
- BERSequence var6 = (BERSequence)BERElement.getElement(var4, var3, var5);
- BEREnumerated var7 = (BEREnumerated)((BERConstruct)var6).elementAt(0);
- var2.setChangeType(((BERIntegral)var7).getValue());
- if (((BERConstruct)var6).size() > 1) {
- if (((BERConstruct)var6).elementAt(1) instanceof BEROctetString) {
- BEROctetString var8 = (BEROctetString)((BERConstruct)var6).elementAt(1);
- var2.setPreviousDN(new String(var8.getValue(), "UTF8"));
- } else if (((BERConstruct)var6).elementAt(1) instanceof BERInteger) {
- BERInteger var10 = (BERInteger)((BERConstruct)var6).elementAt(1);
- var2.setChangeNumber(((BERIntegral)var10).getValue());
- }
- }
-
- if (((BERConstruct)var6).size() > 2) {
- BERInteger var11 = (BERInteger)((BERConstruct)var6).elementAt(2);
- var2.setChangeNumber(((BERIntegral)var11).getValue());
- }
-
- return var2;
- } catch (Throwable var9) {
- return null;
- }
- }
-
- public static LDAPEntryChangeControl parseResponse(LDAPControl[] var0) {
- LDAPPersistSearchControl var1 = new LDAPPersistSearchControl();
-
- for(int var2 = 0; var0 != null && var2 < var0.length; ++var2) {
- if (var0[var2].getID().equals("2.16.840.1.113730.3.4.7")) {
- return var1.parseResponse(var0[var2].getValue());
- }
- }
-
- return null;
- }
-
- private byte[] createPersistSearchSpecification(int var1, boolean var2, boolean var3) {
- BERSequence var4 = new BERSequence();
- ((BERConstruct)var4).addElement(new BERInteger(var1));
- ((BERConstruct)var4).addElement(new BERBoolean(var2));
- ((BERConstruct)var4).addElement(new BERBoolean(var3));
- return ((LDAPControl)this).flattenBER(var4);
- }
- }
-